package com.haogrgr.test.main; import java.beans.Introspector; import java.util.List; import org.springframework.context.annotation.Condition; import org.springframework.context.annotation.ConditionContext; import org.springframework.core.type.AnnotatedTypeMetadata; import org.springframework.util.ClassUtils; import org.springframework.util.MultiValueMap; /** * 当包含BeanFactory中包含SpringConditionTestAnno.value指定的BeanDefinition时, 不初始化 * * @author tudesheng * @since 2016年5月18日 下午5:15:07 * */ public class SpringConditionImpl implements Condition{//ConfigurationCondition { @Override public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) { MultiValueMap<String, Object> attr = metadata .getAllAnnotationAttributes(SpringConditionTestAnno.class.getName()); List<Object> list = attr.get("value"); Class<?> clazz = (Class<?>) list.get(0); String beanName = Introspector.decapitalize(ClassUtils.getShortName(clazz)); if (context.getRegistry().containsBeanDefinition(beanName)) { //or you can remove it //context.getRegistry().removeBeanDefinition(beanName); return false; } return true; } // @Override // public ConfigurationPhase getConfigurationPhase() { // return ConfigurationPhase.PARSE_CONFIGURATION; // } }